home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / util / misc / ReportPlus.lha / reportplus / source / f5.c < prev    next >
Encoding:
C/C++ Source or Header  |  2001-08-20  |  28.7 KB  |  686 lines

  1. #include <exec/types.h>
  2. #include <clib/exec_protos.h>
  3. #include <intuition/intuition.h>
  4. #include <intuition/gadgetclass.h>
  5. #include <clib/intuition_protos.h>
  6. #include <libraries/gadtools.h>
  7. #include <clib/gadtools_protos.h>
  8. #include <libraries/expansion.h>
  9. #include <libraries/expansionbase.h>
  10. #include <libraries/configvars.h>
  11. #include <clib/expansion_protos.h>
  12. #include <graphics/gfx.h>
  13. #include <clib/graphics_protos.h>
  14.  
  15. #include <ctype.h>
  16. #include <stdlib.h>
  17. #include "rp.h"
  18. #include "boards.h"
  19.  
  20. #define MANUFS 63
  21.  
  22. MODULE  ULONG                 querymanuf,
  23.                               queryproduct;
  24. MODULE  UBYTE                 boards;
  25. MODULE  UBYTE                 whichboard;
  26. MODULE  UWORD                 selectedmanuf   = 0,
  27.                               selectedproduct = 0;
  28. MODULE  struct ExpansionBase* ExpansionBase   = NULL;
  29.  
  30. // from rp.c
  31. IMPORT SBYTE             page;
  32. IMPORT ABOOL             fillwindows;
  33. IMPORT struct NewGadget  Gadget;
  34. IMPORT struct Gadget    *BU99_Right,
  35.                         *PrevGadPtr;
  36. IMPORT struct Window*    MainWindowPtr;
  37. IMPORT struct Library*   BoardsBase;
  38.  
  39. MODULE struct
  40. {   UWORD manuf;
  41.     UBYTE product;
  42. } board[32]; // how many boards can you physically have?
  43.  
  44. MODULE struct Gadget  *TE51_Desc,
  45.                       *IN51_ManufID,
  46.                       *TE51_ManufNames,
  47.                       *BU51_NextBoard,
  48.                       *BU51_PrevBoard,
  49.                       *IN51_ProductID,
  50.                       *TE51_ProductNames,
  51.                       *BU51_Query;
  52.  
  53. MODULE struct
  54. {   ULONG  number[3];
  55.     STRPTR name;
  56. } manuf[MANUFS + 1] =
  57. {
  58.  2010,  2113,    -1, "?",
  59.  2117,    -1,    -1, "X-Pert",
  60.  2022,    -1,    -1, "Xetec",
  61.  2028,    -1,    -1, "Xebec",
  62.  8215,    -1,    -1, "Vortex",
  63.  2167,    -1,    -1, "VillageTronic",
  64.  2128,    -1,    -1, "Triceratops",
  65.  1056,    -1,    -1, "Supra",
  66.  2150,    -1,    -1, "SRE",
  67.  2034,  2035,    -1, "Spirit Technology",
  68. 32768,    -1,    -1, "SKI Peripherals",
  69.  2055,    -1,    -1, "Serial Solutions (Checkpoint Technologies)",
  70.  8704,    -1,    -1, "Sang/CT",
  71.  1028,  4136,    -1, "Ronin/Imtronics",
  72. 43437,    -1,    -1, "Reis-Ware",
  73.  8448,    -1,    -1, "ReadySoft",
  74.  2148,    -1,    -1, "Protar",
  75.   756,  2026,    -1, "Progressive Peripherals and Software",
  76.  2101, 46504,    -1, "Phoenix",
  77.  8512,    -1,    -1, "Phase 5",
  78.   211,    -1,    -1, "Pacific Peripherals",
  79.  2145,    -1,    -1, "Omega Datentechnik",
  80.  2067,    -1,    -1, "NES, Incorporated",
  81.  1010,    -1,    -1, "MicroBotics",
  82.  1081,    -1,    -1, "Marc Michael Groth",
  83.  2159,    -1,    -1, "Mainhattan-Data (A-Team)",
  84.   256,  2203, 18260, "MacroSystems USA",
  85.  1030,    -1,    -1, "Lowell University/Commodore Business Machines",
  86.  2073,  4680,    -1, "Kupke/Golem",
  87.  2052,    -1,    -1, "Jochheim",
  88.  2112,    -1,    -1, "IVS",
  89.  2078,    -1,    -1, "Interworks/Network",
  90.  2104,    -1,    -1, "Impulse",
  91.  2071,    -1,    -1, "ICD",
  92.  2121,    -1,    -1, "Hydra Systems",
  93.  2195,    -1,    -1, "Helfrich",
  94.  2560,    -1,    -1, "Harms",
  95.  2011,    -1,    -1, "Hacker",
  96.  1761,  2017,  2193, "Great Valley Peripherals",
  97.  2142,    -1,    -1, "GfxBase",
  98.  1014,    -1,    -1, "Expansion Technologies (Pacific Cypress)",
  99.  8290,    -1,    -1, "Expansion Systems",
  100.  2064,    -1,    -1, "Edotronik",
  101.  2129,    -1,    -1, "DMI",
  102.  2012,    -1,    -1, "DKB",
  103.  1058,    -1,    -1, "CSA",
  104.  1006,    -1,    -1, "Comspec",
  105.   513,   514,    -1, "Commodore Business Machines",
  106.   515,    -1,    -1, "Combitech/MacroSystems USA",
  107. 26470, 49160,    -1, "Combitec",
  108.  2021,    -1,    -1, "California Access (Synergy)",
  109.  1004,  2050,    -1, "C. Ltd",
  110.  2049,    -1,    -1, "BSC (Elaborate Bytes)",
  111.  2092,    -1,    -1, "BSC",
  112.  2146,    -1,    -1, "Atlantis",
  113.  1005,    -1,    -1, "A-Squared",
  114.  1023,    -1,    -1, "ASDG",
  115.  2088,    -1,    -1, "Applied Engineering",
  116.  1009,    -1,    -1, "Anakin Research",
  117.  2176,    -1,    -1, "AmiTrix",
  118.  1053,    -1,    -1, "Ameristar",
  119.  2102,    -1,    -1, "Advanced Storage Systems",
  120.  2149,    -1,    -1, "ACS",
  121.  1012,    -1,    -1, "Access Associates"
  122. };
  123.  
  124. #define PRODUCTS 174
  125. struct
  126. {   ULONG  manufid,
  127.            number[2];
  128.     STRPTR name;
  129.     STRPTR desc;
  130. } product[PRODUCTS + 1] =
  131. {
  132.  2026, 150,  -1, "Zeus 040",                            "68040 accelerator + 32-bit expansion memory + SCSI host adapter", 1056,  12,  -1, "WordSync HD Interface",               "SCSI host adapter",
  133.  2203,  19,  -1, "Warp Engine",                         "68040 accelerator + 32-bit expansion memory",
  134.   256,  19,  -1, "Warp Engine",                         "68040 accelerator + 32-bit expansion memory",
  135.  1010,  68,  -1, "VXL RAM*32",                          "32-bit expansion memory",
  136.  1010,  69,  -1, "VXL 30",                              "68030/6888x accelerator",
  137.  2064,   8,  -1, "VME-Bus Controller",                  "VME-bus interface board",
  138. 18260,   4,  -1, "VLab Y/UV Digitizer",                 "Video digitizer board",
  139.  2117,   2,  -1, "Visiona",                             "Graphics board (I/O area)",
  140.  2117,   1,  -1, "Visiona",                             "Graphics board (memory area)",
  141.  2113, 227,  -1, "Vektor I/O",                          "I/O board",
  142.  2112, 243,  -1, "Vector",                              "68030/68882 accelerator + 32-bit expansion memory",
  143.  2112,  48,  -1, "TrumpCard Classic",                   "SCSI host adapter",
  144.  2112,  52,  -1, "TrumpCard Pro/Grand Slam",            "SCSI host adapter",
  145.  1056,  10,  -1, "SupraRAM",                            "16-bit expansion memory",
  146.  1056,   1,  -1, "SupraDrive 4x4 SCSI",                 "SCSI host adapter",
  147.  1010,   2,  -1, "StarDrive",                           "SCSI host adapter",
  148.  1010,   0,  -1, "StarBoard 2",                         "16-bit expansion memory",
  149. 46504,  33,  -1, "ST506 Autoboot",                      "MFM controller",
  150.  2101,  33,  -1, "ST506 Autoboot",                      "MFM controller",
  151. 49160,  43,  -1, "SRAM Card",                           "Memory board",
  152.  2034,   3,  -1, "SIN500",                              "16-bit expansion memory",
  153.  2012,   9,  -1, "SecureKey",                           "Access control board",
  154. 32768, 128,  -1, "SCSI + Dual Serial",                  "SCSI host adapter/serial board",
  155. 46504,  34,  -1, "SCSI Autoboot",                       "SCSI host adapter",
  156.  2101,  34,  -1, "SCSI Autoboot",                       "SCSI host adapter",
  157.  2073,   2,  -1, "SCSI",                                "SCSI host adapter",
  158. 43437,  17,  -1, "Scan King",                           "Scanner",
  159.   514,  96,  -1, "Romulator",                           "?",
  160. 18260,  16,  -1, "Retina Z3",                           "Graphics board",
  161. 18260,   6,  -1, "Retina",                              "Graphics board",
  162.  2129,   1,  -1, "Resolver",                            "Graphics board",
  163.  2088,  16,  -1, "RAM Works",                           "16-bit expansion memory",
  164.  2052,   1,  -1, "RAM Board",                           "16-bit expansion memory",
  165.  2022,   2,  -1, "RAM Board",                           "16-bit expansion memory",
  166.  1023,   1,   2, "RAM Board",                           "16-bit expansion memory",
  167.  2011,   2,  -1, "Quicknet QN2000",                     "Ethernet LAN board",
  168.  2064,   6,  -1, "PIC Prototyping Board",               "Prototyping board",
  169.  2195,  11,  -1, "Piccolo SD64",                        "Graphics board (I/O area)",
  170.  2195,  10,  -1, "Piccolo SD64",                        "Graphics board (memory area)",
  171.  2195,   6,  -1, "Piccolo",                             "Graphics board (I/O area)",
  172.  2195,   5,  -1, "Piccolo",                             "Graphics board (memory area)",
  173.  2167,  13,  -1, "Picasso ][",                          "Graphics board (segmented area)",
  174.  2167,  12,  -1, "Picasso ][",                          "Graphics board (I/O area)",
  175.  2167,  11,  -1, "Picasso ][",                          "Graphics board (memory area)",
  176.  2112,  16,  -1, "OverDrive",                           "SCSI host adapter",
  177.  4680,   1,  -1, "Omti HD Controller",                  "MFM controller",
  178.  2073,   1,  -1, "Omti HD Controller",                  "MFM controller",
  179.  2092,   5,  -1, "Oktagon",                             "SCSI host adapter",
  180.  2034,   6,  -1, "OctaByte",                            "16-bit expansion memory",
  181.  2102,   1,  -1, "Nexus",                               "SCSI host adapter",
  182.  2128,   1,  -1, "Multiport I/O",                       "I/O board",
  183.  2176,   1,  -1, "Multi-I/O",                           "I/O board",
  184.  2092,  16,  17, "MultiFaceCard",                       "Serial/parallel board",
  185.  2092,  18,  -1, "MultiFaceCard ]I[",                   "Serial/parallel board",
  186.  2112,  64,  -1, "Meta-4",                              "16-bit expansion memory",
  187.  2092,   8,  -1, "Memory Master",                       "16-bit expansion memory",
  188.  2073,   3,  -1, "Memory Expansion",                    "16-bit expansion memory",
  189. 46504, 190,  -1, "Memory Board",                        "16-bit expansion memory",
  190.  2101, 190,  -1, "Memory Board",                        "16-bit expansion memory",
  191.  1010, 129, 193, "MBX 1200",                            "32-bit expansion memory",
  192.  2021,   1,  -1, "Malibu SCSI",                         "SCSI host adapter",
  193.  1058,  17,  -1, "Magnum 040",                          "68040 accelerator + 32-bit expansion memory",
  194.  8704,   1,  -1, "Link-Interface",                      "Transputer link interface",
  195.  1005,   1,  -1, "LIVE! A2000",                         "Video digitizer board",
  196.  2050,   4,  -1, "Kronos 2000",                         "SCSI host adapter",
  197.  1004,   4,  -1, "Kronos 2000",                         "SCSI host adapter",
  198.  2092,  65,  -1, "ISDN-Master",                         "ISDN board",
  199.  2034,   1,  -1, "Insider IN1000",                      "16-bit expansion memory",
  200.  2034,   2,  -1, "Insider IN500",                       "16-bit expansion memory",
  201.  2034,   8,  -1, "Inmate SCSI/FPU/RAM",                 "?",
  202.  2017,  32,  -1, "Impact Vision 24",                    "Graphics board",
  203.  2017,  11,  -1, "Impact Series ][ SCSI (DPRC)",        "SCSI host adapter (or I/O extender)",
  204.  2017,   3,  -1, "Impact Series I SCSI 16K/3",          "SCSI host adapter",
  205.  2017,   2,  -1, "Impact Series I SCSI 16K/2",          "SCSI host adapter",
  206.  2017,   1,  -1, "Impact Series I SCSI 4K",             "SCSI host adapter",
  207.  1761,   8,  -1, "Impact SCSI",                         "SCSI host adapter",
  208.  2017,   8,  13, "Impact A3001 IDE HD",                 "68030/68882 accelerator + IDE controller",
  209.  2064,   1,  -1, "IEEE-488 Controller",                 "IEEE-488 interface board",
  210.  2159,   1,  -1, "IDE",                                 "IDE controller",
  211.  2121,   1,  -1, "Hydra Ethernet",                      "Ethernet LAN board",
  212.  4136,  57,  87, "Hurricane 2800",                      "68030/6888x accelerator + 32-bit expansion memory",
  213.  1028,  57,  87, "Hurricane 2800",                      "68030/6888x accelerator + 32-bit expansion memory",
  214.  2064,   3,  -1, "High-Speed Multiserial Interface",    "Serial board",
  215.   211,  10,  -1, "HD Controller",                       "SCSI host adapter",
  216. 49160,  42,  -1, "HD Controller",                       "SCSI host adapter",
  217.  2034,   4,  -1, "HDA-506",                             "MFM controller",
  218.  1010, 150, 158, "HardFrame/2000",                      "SCSI host adapter",
  219.  2112,   4,  -1, "GrandSlam",                           "SCSI/parallel/serial board",
  220.  1023, 255,  -1, "GPIB or Dual Serial Board",           "IEEE-488 or Twin-X serial card",
  221.  8215,   8,  -1, "GoldenGate 386SX RAM",                "80386SX bridgeboard/Amiga shared RAM",
  222.  8215,   7,  -1, "GoldenGate 386SX",                    "80386SX bridgeboard",
  223.  2150,   1,  -1, "GoldenGate ][",                       "Zorro ][-ISA bridgeboard",
  224.  2017, 255,  -1, "G-Force 040 I/O ('040/2000)",         "Serial/parallel board",
  225.  2142,   0,  -1, "GDA-1 VRAM",                          "Graphics board",
  226.  2142,   1,  -1, "GDA-1",                               "Graphics board",
  227.  2104,   0,  -1, "Firecracker",                         "Frame buffer",
  228.  2092,  32,  -1, "Frame Buffer",                        "Graphics board",
  229.  2022,   1,  -1, "FastTrak HD",                         "SCSI host adapter",
  230.  8512,  10,  -1, "FastLane Z3",                         "SCSI host adapter + 32-bit expansion memory",
  231.  2022,   3,  -1, "FastCard + HD Controller",            "?",
  232.  2067,   0,  -1, "Expansion RAM",                       "16-bit expansion memory",
  233.   756,   2,  -1, "EXP8000",                             "16-bit expansion memory",
  234.  1053,   1,  -1, "Ethernet",                            "Ethernet LAN board",
  235.  2193,   1,  -1, "EGS Spectrum",                        "Graphics board (I/O area)",
  236.  2193,   2,  -1, "EGS Spectrum",                        "Graphics board (memory area)",
  237.  1004,  14,  -1, "Escort",                              "SCSI host adapter",
  238.  1023, 254,  -1, "EB-920 LanRover",                     "Ethernet LAN board",
  239.  1009,   1,  -1, "Easyl",                               "Graphics tablet",
  240.  2064,   9,  -1, "DSP96000 Real Time Data Acquisition", "Data acquisition board",
  241.  2088,  16,  -1, "DL2000",                              "Modem",
  242.  2055,   0,  -1, "Dual Port Serial",                    "Serial board",
  243.  2129,   6,  -1, "Digital Broadcaster 32",              "Image processing board",
  244.  8290,   1,  -1, "DataFlyer 500 SCSI",                  "SCSI host adapter",
  245.  8512,  34,  -1, "CyberVision 64",                      "Graphics board",
  246.  8512,  11,  -1, "CyberStorm",                          "68040 accelerator + 32-bit expansion memory",
  247.  2176,   2,  -1, "CD-RAM",                              "16-bit expansion memory",
  248.  2010,   0,  -1, "Byte Box A500",                       "?",
  249.  8512,  24,  -1, "Blizzard A2060",                      "68060 accelerator + 32-bit expansion memory",
  250.  8512,  17,  -1, "Blizzard 1230",                       "68030/68882 accelerator + 32-bit expansion memory",
  251.  8512,   2,  -1, "Blizzard Turbo",                      "Accelerator board (I/O area)",
  252.  8512,   1,  -1, "Blizzard Turbo",                      "Accelerator board (memory area)",
  253.  2034,   5,  -1, "AX-S IBM Hardware I/O Board",         "I/O board",
  254.  1006,   1,  -1, "AX2000",                              "16-bit expansion memory",
  255.  8448,   1,  -1, "A-Max ][+/A-Max IV",                  "Macintosh emulation board",
  256.  2049,   3,  -1, "ALF 3 SCSI",                          "SCSI host adapter",
  257.  2049,   2,  -1, "ALF 2 SCSI",                          "SCSI host adapter",
  258.  2049,   1,  -1, "ALF 2",                               "MFM controller",
  259.  2071,   1,  -1, "Advantage 2000/AdSCSI",               "SCSI host adapter",
  260.  2167, 201,  -1, "Adriadne",                            "Ethernet LAN + I/O board",
  261.  2071,   4,  -1, "AdRAM 2080",                          "16-bit expansion memory",
  262.  2071,   3,  -1, "AdIDE",                               "IDE controller",
  263.   514,  84,  -1, "A4091",                               "SCSI host adapter",
  264.  1053,  10,  -1, "A4066",                               "Ethernet LAN board",
  265.   514,  97,  -1, "A3000 test fixture",                  "?",
  266.   514,  81,  -1, "A2630",                               "68030/68882 accelerator + 32-bit expansion memory",
  267.   514,  80,  -1, "A2620",                               "68020/68851/6888x accelerator + 32-bit expansion memory",
  268.  1030,   0,  -1, "A2410",                               "Graphics board",
  269.   513, 103,  -1, "A2386SX",                             "80386SX bridgeboard",
  270.   513,   2,  -1, "A2286",                               "80286 bridgeboard",
  271.   514,  70,  -1, "A2232",                               "Serial board",
  272.   514,  69,  -1, "A2232 prototype",                     "Serial board",
  273.   514,   3,  -1, "A2091",                               "SCSI host adapter",
  274.   514,   4,  -1, "A2090B",                              "Autoboot card",
  275.   515,   3,  -1, "A2090/A2090A",                        "MFM controller + SCSI host adapter with new driver",
  276.   514,   1,  -1, "A2090/A2090A",                        "MFM controller + SCSI host adapter",
  277.   513,   1,  -1, "A2088/A2286",                         "8088/80286 bridgeboard",
  278.   514, 112,  -1, "A2065",                               "Ethernet LAN board",
  279.  1053,   9,  -1, "A2060 Arcnet",                        "Arcnet LAN board",
  280.   514,   9,  -1, "A2060",                               "Arcnet LAN board",
  281.   514,  10,  -1, "A205x/A2091/A590",                    "16-bit expansion memory",
  282.  2560, 208,  -1, "A2000 Turboboard 3500 Professional",  "68030/68882 accelerator + 32-bit expansion memory",
  283.  1056,   3,  -1, "A2000 DMA HD Interface",              "SCSI host adapter",
  284.  2017,  22,  -1, "A2000 060 Combo",                     "68060 accelerator + 32-bit expansion memory",
  285.  1004,  12,  -1, "A1000/A2000 SCSI",                    "SCSI host adapter",
  286.  2050,  12,  -1, "A1000 SCSI",                          "SCSI host adapter",
  287.  1056,   2,  -1, "A1000 RAM Expansion",                 "16-bit expansion memory",
  288.   514,   2,  -1, "A590",                                "SCSI host adapter/XT controller",
  289.   514,  32,  -1, "A560",                                "16-bit expansion memory",
  290.  1056,  13,  -1, "A500 ByteSync HD Interface",          "SCSI host adapter",
  291.  1056,   8,  -1, "A500 Autoboot HD Interface",          "SCSI host adapter",
  292.  2073,   5,  -1, "68030 (asynchronous)",                "68030/6888x accelerator",
  293.  2073,   4,  -1, "68030 (synchronous)",                 "68030/6888x accelerator",
  294.  2064,   2,  -1, "8032 Development Adapter",            "CBM-8032 board?",
  295.  1056,  16,  -1, "2400zi+",                             "Modem",
  296.  1056,  11,  -1, "2400zi",                              "Modem",
  297.  1056,   9,  -1, "500/2000 RX",                         "16-bit expansion memory",
  298.  1056,   5,  -1, "500 HD/RAM",                          "SCSI host adapter + 16-bit expansion memory",
  299.  2026, 105,  -1, "040/A2000 Board",                     "68040 accelerator + 32-bit expansion memory",
  300.  2064,   5,  -1, "32-Bit Parallel I/O Interface",       "Parallel board",
  301.  2064,   4,  -1, "24-Bit Real Time Video Digitizer",    "Video digitizer board",
  302.  2064,   7,  -1, "16-Channel ADC Interface",            "Analog to digital board",
  303.  1058,  21,  -1, "12 Gauge",                            "68030/68882 accelerator + 32-bit expansion memory",
  304.  1010,   4,  -1, "8-UP! (Z)",                           "16-bit expansion memory",
  305.  1010,   3,  -1, "8-UP! (A)",                           "16-bit expansion memory"
  306. };
  307.  
  308. AGLOBAL void runquery(ULONG querymanuf, ULONG queryproduct)
  309. {   SWORD i, /* i must be signed and at least 16 bits wide */
  310.           j;
  311.     TEXT  manuf_buffer[49], product_buffer[49];
  312.  
  313.     /* This function takes a manufacturer and product ID and attempts
  314.     to update the text gadgets with a relevant text description.
  315.  
  316.     If ~0 (-1) is passed for either the manufacturer or product ID,
  317.     the function returns instantly without doing anything. */
  318.  
  319.     selectedmanuf   =
  320.     selectedproduct = (UWORD) ~0;
  321.  
  322.     if (querymanuf == (ULONG) ~0 || queryproduct == (ULONG) ~0)
  323.     {   return;
  324.     }
  325.  
  326.     if (BoardsBase)
  327.     {   if (GetBoardName(manuf_buffer, product_buffer, NULL, querymanuf, queryproduct))
  328.         {   GT_SetGadgetAttrs
  329.             (   TE51_ManufNames,
  330.                 MainWindowPtr,
  331.                 NULL,
  332.                 GTTX_Text, manuf_buffer,
  333.                 TAG_DONE
  334.             );
  335.             GT_SetGadgetAttrs
  336.             (   TE51_ProductNames,
  337.                 MainWindowPtr,
  338.                 NULL,
  339.                 GTTX_Text, product_buffer,
  340.                 TAG_DONE
  341.             );
  342.             GT_SetGadgetAttrs
  343.             (   TE51_Desc,
  344.                 MainWindowPtr,
  345.                 NULL,
  346.                 GTTX_Text, "-",
  347.                 TAG_DONE
  348.             );
  349.             return;
  350.     }   }
  351.  
  352.     // can't find in boards.library
  353.     for (i = 0; i <= MANUFS; i++) // go through each manufacturer
  354.     {   for (j = 0; j <= 2; j++)  // each manufacturer has up to 3 IDs
  355.         {   if (querymanuf == manuf[i].number[j])
  356.             {   selectedmanuf = i;
  357.                 break;            // for speed
  358.     }   }   }
  359.  
  360.     if (selectedmanuf == (UWORD) ~0)
  361.     {   /* can't find manufacturer, let alone product */
  362.         GT_SetGadgetAttrs
  363.         (   TE51_ManufNames,
  364.             MainWindowPtr,
  365.             NULL,
  366.             GTTX_Text, "-",
  367.             TAG_DONE
  368.         );
  369.         GT_SetGadgetAttrs
  370.         (   TE51_ProductNames,
  371.             MainWindowPtr,
  372.             NULL,
  373.             GTTX_Text, "-",
  374.             TAG_DONE
  375.         );
  376.         GT_SetGadgetAttrs
  377.         (   TE51_Desc,
  378.             MainWindowPtr,
  379.             NULL,
  380.             GTTX_Text, "-",
  381.             TAG_DONE
  382.         );
  383.         return;
  384.     }
  385.  
  386.     // found manufacturer
  387.     GT_SetGadgetAttrs
  388.     (   TE51_ManufNames,
  389.         MainWindowPtr,
  390.         NULL,
  391.         GTTX_Text, manuf[selectedmanuf].name,
  392.         TAG_DONE
  393.     );
  394.  
  395.     // now look for product too
  396.     for (i = 0; i <= PRODUCTS; i++)
  397.     {   if (querymanuf == product[i].manufid)
  398.         {   for (j = 0; j <= 1; j++)
  399.             {   if (queryproduct == product[i].number[j])
  400.                 {    selectedproduct = i;
  401.                      break; // for speed
  402.     }   }   }   }
  403.  
  404.     if (selectedproduct == (UWORD) ~0)
  405.     {   // can't find product
  406.  
  407.         GT_SetGadgetAttrs
  408.         (   TE51_ProductNames,
  409.             MainWindowPtr,
  410.             NULL,
  411.             GTTX_Text, "-",
  412.             TAG_DONE
  413.         );
  414.         GT_SetGadgetAttrs
  415.         (   TE51_Desc,
  416.             MainWindowPtr,
  417.             NULL,
  418.             GTTX_Text, "-",
  419.             TAG_DONE
  420.         );
  421.         return;
  422.     }
  423.  
  424.     GT_SetGadgetAttrs
  425.     (   TE51_ProductNames,
  426.         MainWindowPtr,
  427.         NULL,
  428.         GTTX_Text, product[selectedproduct].name,
  429.         TAG_DONE
  430.     );
  431.     GT_SetGadgetAttrs
  432.     (   TE51_Desc,
  433.         MainWindowPtr,
  434.         NULL,
  435.         GTTX_Text, product[selectedproduct].desc,
  436.         TAG_DONE
  437.     );
  438. }
  439.  
  440. AGLOBAL void updatemanuf(void)
  441. {   if (whichboard == 0)
  442.         GT_SetGadgetAttrs
  443.         (   BU51_PrevBoard,
  444.             MainWindowPtr, NULL,
  445.             GA_Disabled, TRUE,
  446.             TAG_DONE
  447.         );
  448.     else
  449.         GT_SetGadgetAttrs
  450.         (   BU51_PrevBoard,
  451.             MainWindowPtr, NULL,
  452.             GA_Disabled, FALSE,
  453.             TAG_DONE
  454.         );
  455.  
  456.     if (whichboard < boards)
  457.     {   GT_SetGadgetAttrs
  458.         (   BU51_Query,
  459.             MainWindowPtr, NULL,
  460.             GA_Disabled, TRUE,
  461.             TAG_DONE
  462.         );
  463.         GT_SetGadgetAttrs
  464.         (   BU51_NextBoard,
  465.             MainWindowPtr, NULL,
  466.             GA_Disabled, FALSE,
  467.             TAG_DONE
  468.         );
  469.         GT_SetGadgetAttrs
  470.         (   IN51_ManufID,
  471.             MainWindowPtr, NULL,
  472.             GA_Disabled, TRUE,
  473.             GTIN_Number, board[whichboard].manuf,
  474.             TAG_DONE
  475.         );
  476.         GT_SetGadgetAttrs
  477.         (   IN51_ProductID,
  478.             MainWindowPtr, NULL,
  479.             GA_Disabled, TRUE,
  480.             GTIN_Number, board[whichboard].product,
  481.             TAG_DONE
  482.         );
  483.     } else
  484.     {   GT_SetGadgetAttrs
  485.         (   BU51_Query,
  486.             MainWindowPtr, NULL,
  487.             GA_Disabled, FALSE,
  488.             TAG_DONE
  489.         );
  490.         GT_SetGadgetAttrs
  491.         (   BU51_NextBoard,
  492.             MainWindowPtr, NULL,
  493.             GA_Disabled, TRUE,
  494.             TAG_DONE
  495.         );
  496.         GT_SetGadgetAttrs
  497.         (   IN51_ManufID,
  498.             MainWindowPtr, NULL,
  499.             GA_Disabled, FALSE,
  500.             GTIN_Number, querymanuf,
  501.             TAG_DONE
  502.         );
  503.         GT_SetGadgetAttrs
  504.         (   IN51_ProductID,
  505.             MainWindowPtr, NULL,
  506.             GA_Disabled, FALSE,
  507.             GTIN_Number, queryproduct,
  508.             TAG_DONE
  509.         );
  510.     }
  511.     runquery(board[whichboard].manuf, board[whichboard].product);
  512. }
  513.  
  514. AGLOBAL void manuf1(void)
  515. {   struct ConfigDev* ThisConfigDev;
  516.     
  517.     if (ExpansionBase = (struct ExpansionBase *) OpenLibrary(EXPANSIONNAME, 0))
  518.     {   /* Use FindConfigDev() to get info on the first expansion board on
  519.         the list maintained by Exec. */
  520.  
  521.         if (ThisConfigDev = FindConfigDev(NULL, -1, -1))
  522.         {   board[0].manuf = ThisConfigDev->cd_Rom.er_Manufacturer;
  523.             board[0].product = ThisConfigDev->cd_Rom.er_Product;
  524.             boards = 1;
  525.  
  526.             /* OK, there is at least one board, so loop and get the
  527.             entire list. */
  528.             while (ThisConfigDev = FindConfigDev(ThisConfigDev, -1, -1))
  529.             {   board[boards].manuf = ThisConfigDev->cd_Rom.er_Manufacturer;
  530.                 board[boards++].product = ThisConfigDev->cd_Rom.er_Product;
  531.         }   }
  532.         else boards = 0;
  533.         CloseLibrary((struct Library *) ExpansionBase);
  534.     }
  535.  
  536.     verynewwindow
  537.     (   MANUF1WIDTH, MANUF1HEIGHT,
  538.         "Report+: ID Database",
  539.         BUTTONIDCMP | STRINGIDCMP
  540.     );
  541.     if (fillwindows)
  542.     {   SetAPen(MainWindowPtr->RPort, 0);
  543.         RectFill(MainWindowPtr->RPort, 130, 28, 130 + 390, 28 + 12);
  544.         RectFill(MainWindowPtr->RPort, 130, 42, 130 + 390, 42 + 12);
  545.         RectFill(MainWindowPtr->RPort, 130, 56, 130 + 390, 56 + 12);
  546.     }
  547.  
  548.     /* manufacturer name */
  549.     setgadget(130, 28, 390, 12, "Manufacturer:", NULL);
  550.     TE51_ManufNames = PrevGadPtr = (struct Gadget *) CreateGadget
  551.     (   TEXT_KIND,
  552.         PrevGadPtr,
  553.         &Gadget,
  554.         GTTX_Text, "-",
  555.         GTTX_Border, TRUE,
  556.         TAG_DONE
  557.     );
  558.     /* product name */
  559.     setgadget(130, 42, 390, 12, "Product:", NULL);
  560.     TE51_ProductNames = PrevGadPtr = (struct Gadget *) CreateGadget
  561.     (   TEXT_KIND,
  562.         PrevGadPtr,
  563.         &Gadget,
  564.         GTTX_Text, "-",
  565.         GTTX_Border, TRUE,
  566.         TAG_DONE
  567.     );
  568.     /* product description */
  569.     setgadget(130, 56, 390, 12, "Description:", NULL);
  570.     TE51_Desc = PrevGadPtr = (struct Gadget *) CreateGadget
  571.     (   TEXT_KIND,
  572.         PrevGadPtr,
  573.         &Gadget,
  574.         GTTX_Text, "-",
  575.         GTTX_Border, TRUE,
  576.         TAG_DONE
  577.     );
  578.  
  579.     /* manufacturer ID */
  580.     setgadget(560, 28, 64, 12, "_ID:", NULL);
  581.     IN51_ManufID = PrevGadPtr = (struct Gadget *) CreateGadget
  582.     (   INTEGER_KIND,
  583.         PrevGadPtr,
  584.         &Gadget,
  585.         GTIN_Number, querymanuf,
  586.         GA_TabCycle, TRUE,
  587.         STRINGA_ReplaceMode, TRUE,
  588.         STRINGA_Justification, GACT_STRINGRIGHT,
  589.         GT_Underscore, '_',
  590.         TAG_DONE
  591.     );
  592.  
  593.     /* product ID */
  594.     setgadget(560, 42, 64, 12, "I_D:", NULL);
  595.     IN51_ProductID = PrevGadPtr = (struct Gadget *) CreateGadget
  596.     (   INTEGER_KIND,
  597.         PrevGadPtr,
  598.         &Gadget,
  599.         GTIN_Number, queryproduct,
  600.         GA_TabCycle, TRUE,
  601.         STRINGA_ReplaceMode, TRUE,
  602.         STRINGA_Justification, GACT_STRINGRIGHT,
  603.         GT_Underscore, '_',
  604.         TAG_DONE
  605.     );
  606.  
  607.     /* query */
  608.     setgadget(560, 56, 64, 12, "_Query", NULL);
  609.     BU51_Query = PrevGadPtr = (struct Gadget *) CreateGadget
  610.     (   BUTTON_KIND,
  611.         PrevGadPtr,
  612.         &Gadget,
  613.         GT_Underscore, '_',
  614.         TAG_DONE
  615.     );
  616.  
  617.     /* previous board */
  618.     setgadget(130, 70, 195, 12, "_Previous Board", NULL);
  619.     BU51_PrevBoard = PrevGadPtr = (struct Gadget *) CreateGadget
  620.     (   BUTTON_KIND,
  621.         PrevGadPtr,
  622.         &Gadget,
  623.         GT_Underscore, '_',
  624.         TAG_DONE
  625.     );
  626.     /* next board */
  627.     setgadget(325, 70, 195, 12, "_Next Board", NULL);
  628.     BU51_NextBoard = PrevGadPtr = (struct Gadget *) CreateGadget
  629.     (   BUTTON_KIND,
  630.         PrevGadPtr,
  631.         &Gadget,
  632.         GT_Underscore, '_',
  633.         TAG_DONE
  634.     );
  635.  
  636.     /* boards is the actual number of boards found. 0 to (board - 1).
  637.     We actually use the [board] index as our 'spare' 'queryable' index.
  638.  
  639.     In the old way of doing windows, we first called navigate(), then
  640.     set up the gadgets, then called newwindow().
  641.         In the new way, we first call verynewwindow() (which calls
  642.     navigate() automatically), then set up the gadgets, then call
  643.     drawgadgets(). */
  644.  
  645.     drawgadgets((UWORD) ~0);
  646.     ActivateGadget(IN51_ManufID, MainWindowPtr, NULL);
  647.     updatemanuf();
  648.     loop();
  649.     closewindow();
  650. }
  651.  
  652. AGLOBAL void manuf_loop(ULONG class, struct Gadget* addr, UWORD code)
  653. {   if (class == IDCMP_VANILLAKEY)
  654.     {   code = toupper(code);
  655.         if (code == 'Q')
  656.         {   querymanuf = ((struct StringInfo *) IN51_ManufID->SpecialInfo)->LongInt;
  657.             queryproduct = ((struct StringInfo *) IN51_ProductID->SpecialInfo)->LongInt;
  658.             runquery(querymanuf, queryproduct);
  659.         } elif (code == ESCAPE)
  660.         {   page = 0;
  661.         } elif (code == 'N')
  662.         {   whichboard++;
  663.             updatemanuf();
  664.         } elif (code == 'P')
  665.         {   whichboard--;
  666.             updatemanuf();
  667.         } elif (code == 'I')
  668.         {   ActivateGadget(IN51_ManufID, MainWindowPtr, NULL);
  669.         } elif (code == 'D')
  670.         {   ActivateGadget(IN51_ProductID, MainWindowPtr, NULL);
  671.     }   }
  672.     elif (class == IDCMP_GADGETUP)
  673.     {   if (addr == BU99_Right)
  674.         {   page = 0;
  675.         } elif (addr == BU51_Query)
  676.         {   querymanuf = ((struct StringInfo *) IN51_ManufID->SpecialInfo)->LongInt;
  677.             queryproduct = ((struct StringInfo *) IN51_ProductID->SpecialInfo)->LongInt;
  678.             runquery(querymanuf, queryproduct);
  679.         } elif (addr == BU51_NextBoard)
  680.         {   whichboard++;
  681.             updatemanuf();
  682.         } elif (addr == BU51_PrevBoard)
  683.         {   whichboard--;
  684.             updatemanuf();
  685. }   }   }
  686.